﻿using Koala.Pro.Common;
using Koala.Pro.Core;
using Koala.Pro.Core.Dto;
using Koala.Pro.Core.Models;
using Koala.Pro.Models;

namespace Koala.Pro.Services
{
    public interface IUserService : IMyCrudService<UserInfo, int, UserPagedDto>, ITransientDependency, IDependency
    {
        Task<LoginResult> Login(LoginDto dto);

        Task<List<UserInfo>> GetUsersByRole(int roleID);

        Task<List<UserInfo>> GetUsersByOU(int ouID);

        Task<List<UserInfo>> FindByDept(int ouID);

        Task<bool> ModifyPassword(string userName, string userPassword, string systemType = null);

        Task<bool> ResetPassword(int userId);

        Task<bool> BatchExpire(List<int> idList, bool expired);

        Task<bool> SetExpire(int userId, bool expired);

        Task<bool> CancelExpire(int userID);

        Task<string> GetFullNameByID(int id);

        Task<string> GetFullNameByName(string userName);

        Task<CommonResult> UpdateUser(UpdateUserDto input);
    }
}
